The majority of computer system users today work on computers running some type of GUI OS such as Windows 3.1, Windows 3.11 and Windows 95, developed by Microsoft Corp., Redmond, Wash. and IBM OS/2, manufactured by IBM Corp., Armonk, N.Y. These operating systems are able to execute many application programs, including threads, at the same time (i.e. multitasking). These applications perform such specific tasks as word processing, database management, spreadsheet calculations, etc.
The above mentioned GUI oriented operating systems are all based on the concept of a window. The window is the basic unit of the GUI and the user interacts with applications through one or more windows. Text and pictures (i.e. bitmaps) are among the basic units of information with which the user works while interacting with the GUI.
Applications can exchange data and control each other within the multitasking OS. There are several mechanisms of interprocess communications and data exchange within most modern operating systems. They include shared memory, the clipboard, application to application communication mechanism and data object linking and embedding services. These facilities share one major disadvantage: the application must have been designed and coded to specifically support any of these interprocess communications mechanisms.
The majority of these GUI operating systems today incorporate some form of temporary buffering facility, whereby data from one window may be cut or copied to a buffer (i.e. the clipboard in the Windows OS) and later pasted into another application. The use of this buffer is a simple and effective mechanism of getting data from one application into another, especially when the applications were not designed to work with each other. This mechanism allows applications from different vendors to share data without each knowing about the other. However, for this mechanism to function, the application itself must have been written to include the necessary cut, copy and paste functions for a user to exploit the temporary buffer mechanism (i.e. the clipboard in Windows). Unfortunately, there exist many applications that do not incorporate this mechanism to get data out of their window(s) and put it into the clipboard. Applications such as terminal emulators, data communication programs (i.e. modem and faxing programs), Internet access software, etc., generally do not supply a simple and easy mechanism to get data out of their programs and to route it to a destination.
Screen capture programs, well known in the prior art, offer an alternative to the clipboard for capturing window data, but they too suffer from disadvantages. Screen capture programs operate on the level of screen memory. They allow a user to capture any portion of the actual visible screen without regard to the type of data being displayed. Captured data is by necessity stored as bitmapped graphics data. It is impossible to capture a text portion of a screen corresponding to, for example, a word processor and store the captured data as text or string data (e.g., in ASCII format), without additional processing such as optical character recognition (OCR). Screen capture programs suffer from not being able to store the data they capture in the data's native format.
U.S. Pat. No. 5,392,386, issued to Chalas, teaches a system for adding functions to an existing application program executing in a computer system having a GUI that includes a clipboard. The system intercepts communications between the OS and the application program and determines when the user is invoking one of the added functions. The system sends captured information to the clipboard in response to user commands.
It is desirable to have a system for and a method of getting text and bitmaps data from any application running in system, without utilizing a clipboard, saving it in buffer and delivering it to any other application or output device.
Hereinafter, the term output device is defined as any hardware device, file, software application or other receptacle, existing either in hardware or software, that is able to receive data. The term standard graphic format is defined as any graphic format supported by the Windows operating system. The term standard text format is defined as the ASCII format widely used in today's PCs.